소프트웨어 개발단계

소프트웨어 개발단계 개요

소프트웨어 개발 단계는 소프트웨어 제품을 생산하기 위한 다양한 태스크(Task)와 이들 결과물의 집합으로, 대부분의 활동은 소프트웨어 엔지니어에 의해 수행된다.

공정

  • 소프트웨어를 개발하기 위해서는 어떠한 순서로 개발할 것인지를 결정해야 하는데, 이러한 개발 순서를 명시한 것을 공정이라 한다.
  • 공정의 각 단계는 태스크라는 작업 활동으로 구성된다.

보호활동

  • 소프트웨어 개발 단계(정의 $\rightarrow$ 개발 $\rightarrow$ 유지보수)에는 보호활동이라고 할 수 있는 다양한 활동들이 존재한다.
  • 주요 태스크로는 프로젝트의 추적 및 제어, 품질보증, 형상관리, 문서화, 측정, 위험관리 등이 있다.
  • 프로젝트에 대한 전반적인 계획인 프로젝트의 범위, 자원, 위험, 비용, 일정을 개발 계획서에 명시하여 프로젝트 관리자와 기술진, 고객에게 상호 협의할 수 있는 윤곽을 제시한다.
  • 그 밖에도 위험에 대한 대책, 품질보장에 대한 방법 및 변경관리에 대한 활동들이 보호 활동에 속한다.


소프트웨어 정의단계 세부 절차

소프트웨어 개발에 있어서 가장 어려운 부분으로 무엇을 개발할 것인가를 정확히 결정하는 것이다. 사용자가 무엇을 원하는지, 무엇이 문제인가를 알아내야 한다. 즉, 핵심적인 요구사항을 식별하는 단계로 기능적인 요구사항은 반드시 식별해야 한다. 주요 태스크에는 요구사항 분석이 있고, 요구사항 분석 후 요구사항 명세서가 도출 된다.

요구사항 분석

  • 현재의 상태파악 및 문제정의 $\rightarrow$ 문제 해결과 구현될 시스템의 목표를 도출한다.

요구사항 명세서 작성

  • 완성될 소프트웨어가 어떤 기능을 가져야 하는가를 정확히 기술한다.


소프트웨어 개발단계 세부 절차

주요 태스크로는 아키텍쳐 수립, 소프트웨어 설계, 코드 생성(구현), 소프트웨어 테스트 등이 있다.

설계

  • 개발될 소프트웨어에 대한 요구사항이 분석된 후에 수행되는 단계로, 소프트웨어의 내부구조를 설계하고 자료구조를 설계한다.
  • 소프트웨어는 요구사항 명세서에 기술된 기능을 수행하도록 설계되어야 한다.
    철저한 요구사항 분석 $\rightarrow$ 성공적인 설계 수행 (분석 단계의 산출물 = 설계 단계의 입력물)

구현

  • 설계 단계의 산출물들을 프로그래밍 언어로 변환하는 작업이다.

테스트

  • 구현 단계에서 얻어진 코드들이 올바로 동작하는지 검사한다.

    단위 테스트

    • 하나의 클래스가 올바로 동작하는지를 검사하는 과정으로 흔히 개발과정에서 병행되어 수행된다.
    • 검사할 대상이 되는 클래스가 구동하기 위해서 다른 클래스를 필요로 하는 경우가 많다. (간략한 Stub 클래스 개발)
    • 단, 의존하고 있는 클래스가 적은 것부터 의존하고 있는 클래스가 많은 순서로 구현한다.

    통합 테스트

    • 단위 테스트를 통과한 클래스들을 하나의 시스템으로 통합하는 과정에서 서로 올바르게 상호작용하는지 검사한다.
    • 여러 클래스들이 상호 동작하여 기능을 올바르게 제공하는지에 집중하여 검사를 수행한다.

    시스템 테스트

    • 제한된 자원에서 적절히 동작하는지 검사한다.
    • 과도한 입력에 대해서도 올바르게 동작하는지 검사한다.


소프트웨어 유지보수단계 세부 절차

변경에 초점을 맞춰 오류 수정, 환경변화에 따른 적응, 기능 향상에 따른 요구사항의 변경 등을 고려한다.

기존 소프트웨어 이해

  • 효율적인 소프트웨어 유지보수의 근본이 되는 것은 기존 소프트웨어를 이해하는 것이다.

변경 요구 분석

  • 요구 분석 변경이 불가피한 이유와 요구를 잘 분석하여 이해해야 한다.

변경 및 효과 예측

  • 실제 변경을 수행하기 전에 변경으로 인한 범위와 그 영향에 대해서 점검한다.
  • 분석 결과에 따라서 수정해야 하는 작업의 규모와 그 난이도를 감안해서 일정을 수립한다.

소프트웨어 변경 수행

  • 소프트웨어 변경을 수행할 때에는 계획한 대상에 대해서 순차적으로 진행한다.

회귀 테스트(Regression Test)

  • 변경에 의해 영향을 받는 부분에 대해서 다시 테스트하면 유지보수 작업이 마무리 된다.
Share